<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script type="text/javascript">
			var aaa = function(){
				var a = 1;
				return function(){//执行到return 时,并不会去执行匿名函数,而是会将其当作函数字符串进行返回.
					a = a + 1;
					return a;
				}
			}
			var b = aaa();
			console.log(b);//aaa()返回的是 return 返回的匿名函数 => function(){a=2;return a;}
			
			//重点:且此时虽然函数 b 中没用 a 的声明,a 也不是全局变量,但是b函数中的a依然隐性的指向aaa()函数中声明的var a = 1;
			
			var c = b();//即之前的代码 var b = aaa() 等于是给b做了一个函数声明.此时变量b已经可以作为函数执行.
			console.log(c);// => 2
			//此时c就成了函数
			
			
			/* 然而将其改写为立即执行函数时， */
			aaa = (function(){
				var a = 1;
				return function(){
					a = a + 1;
					return a;
				}
			})()
			b = aaa();
			console.log(b);//此时返回的是一个2
			// alert(a);
		</script>
	</body>
</html>
